/* 
 * File:   Ficheros.h
 * Author: jesus
 *
 * Created on 15 de junio de 2010, 12:55
 * /
/**/
#ifndef _FICHEROS_H
#define	_FICHEROS_H
#include <iostream>
#include <string>
#include <fstream>

#include <deque>
using namespace std;

template<class Typo>
class Ficheros{
    fstream fich;
public:
    Ficheros();
    ~Ficheros(){fich.close();}
    Ficheros(string fiche);
    deque<Typo*> Cargar(int *posiciones);
    void Guardar(Typo &elemento);
    Typo * leer(int posicion);
};
template<class Typo> Ficheros<Typo>::Ficheros(){
    fich.open("fichero.dat",ios::in | ios::out);
}
template<class Typo> Ficheros<Typo>::Ficheros(string fiche){
    fich.open(fiche.c_str(),ios::in | ios::out);
}
template<class Typo> deque<Typo*> Ficheros<Typo>::Cargar(int *posiciones){

    int pos=0;
    deque<Typo*> retDeque;

    fich.seekp(ios::beg);

    for(pos=0;!fich.end();pos++){
        Typo *nuevo;
        nuevo=new Typo();
        nuevo<<fich;
        fich.read((reinterpret_cast<char*>(*nuevo)),sizeof(Typo));
        fich.seekg(pos*sizeof(Typo));
        posiciones[pos]=fich.seekp(pos);
        
    }
    return retDeque;
}
template<class Typo> void Ficheros<Typo>::Guardar(Typo &elemento){
    fich.seekp(ios::end);
    fich.write(&elemento,sizeof(Typo));
    fich<<elemento;
}
template<class Typo> Typo * Ficheros<Typo>::leer(int posicion){
    Typo *nuevo;
    nuevo=new Typo;
    fich.seekp(ios::beg);
    fich.seekg(posicion*sizeof(Typo));
      return 
}

 
#endif	/* _FICHEROS_H */

